package com.back.service;

import com.back.model.entity.Weapon;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
* @author 李瑞
* @description 针对表【Weapon】的数据库操作Service
* @createDate 2025-09-12 19:07:44
*/
public interface WeaponService extends IService<Weapon> {

    /**
     * 根据条件分页查询武器列表
     * @param page 分页参数
     * @param weaponName 武器名称
     * @param heroId 英雄ID
     * @return 武器分页列表
     */
    IPage<Weapon> listWeaponByPage(Page<Weapon> page, String weaponName, Integer heroId);

    /**
     * 根据英雄ID查询武器列表
     * @param heroId 英雄ID
     * @return 武器列表
     */
    List<Weapon> getWeaponsByHeroId(Integer heroId);

    /**
     * 获取所有武器列表（用于前端展示）
     * @return 武器列表
     */
    List<Weapon> getAllWeapons();

    /**
     * 创建武器
     * @param weapon 武器信息
     * @return 是否创建成功
     */
    boolean createWeapon(Weapon weapon);

    /**
     * 更新武器信息
     * @param weapon 武器信息
     * @return 是否更新成功
     */
    boolean updateWeapon(Weapon weapon);

    /**
     * 根据武器ID删除武器
     * @param weaponId 武器ID
     * @return 是否删除成功
     */
    boolean deleteWeapon(Integer weaponId);

    /**
     * 根据武器ID获取武器详情
     * @param weaponId 武器ID
     * @return 武器详情
     */
    Weapon getWeaponById(Integer weaponId);

    /**
     * 校验武器数据
     * @param weapon 武器信息
     * @param add 是否为新增操作
     */
    void validWeapon(Weapon weapon, boolean add);

}
